package pe.com.astech.web.service;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;

import pe.com.astech.web.bean.ExperienciaBean;
import pe.com.astech.web.exception.OtherException;
import pe.com.astech.web.util.Constantes;

@Service
public class ExperienciaServiceImpl implements ExperienciaService{

	
	private static final Log log = LogFactory.getLog(ExperienciaServiceImpl.class);
	
	@Override
	public List<ExperienciaBean> agregarExpLista(String mensajeTrazabilidad,
			ExperienciaBean experienciaBean, List<ExperienciaBean> lista) throws Exception {
		
		String idHerramienta = Constantes.VACIO;
		String nombreHerramienta = Constantes.VACIO;
		int ubicacion = Constantes.intCERO;
		
		ubicacion = experienciaBean.getId_herramienta().indexOf(Constantes.GUION);
		idHerramienta = experienciaBean.getId_herramienta().substring(Constantes.intCERO,ubicacion);
		nombreHerramienta = experienciaBean.getId_herramienta().substring(ubicacion+Constantes.intUNO);	
		
		log.info(mensajeTrazabilidad + " idHerramienta " + idHerramienta);
		
		experienciaBean.setId_herramienta(idHerramienta);
		experienciaBean.setHerramienta(nombreHerramienta);
		
		
		boolean b = false;
		
		if(lista.size()==Constantes.intCERO){
			b = true;
		}
		else{
			for(ExperienciaBean expBean:lista){
				log.info(mensajeTrazabilidad + " id_herramienta " + expBean.getId_herramienta());
				if(expBean.getId_herramienta().equals(idHerramienta)){
					throw new Exception(mensajeTrazabilidad + " La herramienta ya existe.");
				}
				else{
					b = true;
				}
			}
		}
		
		if(b){ lista.add(experienciaBean); }
		
		log.info(mensajeTrazabilidad + " cantidad de elementos " + lista.size());
		
		return lista;
	}

	@Override
	public ExperienciaBean obtenerExpLista(String mensajeTrazabilidad,
			ExperienciaBean experienciaBean,
			List<ExperienciaBean> empleadoListExperiencia){

		for(ExperienciaBean expBean:empleadoListExperiencia){
			log.info(mensajeTrazabilidad + " " + expBean.toString());
			if(expBean.getId_empleado().equals(experienciaBean.getId_empleado()) && expBean.getId_herramienta().equals(experienciaBean.getId_herramienta())){
				log.info(mensajeTrazabilidad + " [entro] " + expBean.toString());
				experienciaBean = expBean;
				experienciaBean.setOpcion(Constantes.ACTUALIZAR);
				break;
			}
		}
		
		return experienciaBean;
	}

	@Override
	public List<ExperienciaBean> actualizarExpLista(String mensajeTrazabilidad,
			List<ExperienciaBean> empleadoListExperiencia,
			ExperienciaBean experienciaBean) {

		for(int i=0;i<empleadoListExperiencia.size();i++){
			ExperienciaBean expBean = empleadoListExperiencia.get(i);
			log.info(mensajeTrazabilidad + " id_herramienta " + expBean.getId_herramienta());
			log.info(mensajeTrazabilidad + " id_empleado " + expBean.getId_empleado());
			
			if(expBean.getId_herramienta().equals(experienciaBean.getId_herramienta()) && expBean.getId_empleado().equals(experienciaBean.getId_empleado())){
				log.info(mensajeTrazabilidad + " Se modifico ");
				empleadoListExperiencia.set(i, experienciaBean);
				break;
			}
		}
		
		return empleadoListExperiencia;
	}


}
